package com.qf.service;

import com.qf.dao.UserDao;
import com.qf.mapper.EmpMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Repository;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Isolation;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;

import javax.annotation.Resource;
import java.io.FileNotFoundException;

/**
 * Shift  + F6  重命名
 * @author lixu
 *
 * <bean id=empService  class=com.qf.service.EmpServiceImpl
 *
 * @Service("eS"): 默认名称是接口名称的头字母小写、
 *    eS: 自定义名称
 *
 *   自定义名称使用场景 ： 一个接口对应多个Service实现类
 *
 *
 *   Spring全家桶
 *
 */
@Service
@Scope("prototype")//多例  默认就是单例
public class EmpServiceImpl implements EmpService{

    /**
     * 使用@Value读取 .properties结尾的文件中的内容
     */
    @Value("${xingming}")
    private String xm;


    @Override //事务注解
    @Transactional(timeout = 3,propagation = Propagation.REQUIRED
        ,isolation = Isolation.DEFAULT,
            //rollbackForClassName = "java.io.FileNotFoundException",//扩展触发事务的异常
            rollbackFor = FileNotFoundException.class,
           // noRollbackForClassName = "java.lang.ArithmeticException",//减少触发事务的异常
            noRollbackFor = ArithmeticException.class,
            readOnly = true  //查询是只读 表示不需要事务
    ) //事务注解





    public String addEmp(String name,Integer age) {
        System.out.println("==我是Emp实现类");
        return "我是addEmp的返回值";
    }


    /**
     * JDK提供的注解
     * Autowired：Spring官方封装了JDK提供的注解（@Resource）
     */
/*    @Resource
    private EmpMapper empMapper;*/
    //@Autowired //IDEA 放弃对你的提示 警告 required = true:必须注入成功   EmpMapper不存在
    //@Qualifier("uS") //5%


    //1：注入 2：改名
    //@Resource(name = "uS")
    //private UserService userService;


}
